home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / Printing.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  15.9 KB  |  515 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        Printing.h
  3.  
  4.      Contains:    Print Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1985-1999 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __PRINTING__
  18. #define __PRINTING__
  19.  
  20. #ifndef __MACERRORS__
  21.     #include <MacErrors.h>
  22. #endif
  23.  
  24. #ifndef __QUICKDRAW__
  25.     #include <Quickdraw.h>
  26. #endif
  27.  
  28. #ifndef __DIALOGS__
  29.     #include <Dialogs.h>
  30. #endif
  31.  
  32.  
  33.  
  34.  
  35. #if PRAGMA_ONCE
  36. #pragma once
  37. #endif
  38.  
  39. #ifdef __cplusplus
  40. extern "C" {
  41. #endif
  42.  
  43. #if PRAGMA_IMPORT
  44. #pragma import on
  45. #endif
  46.  
  47. #if PRAGMA_STRUCT_ALIGN
  48.     #pragma options align=mac68k
  49. #elif PRAGMA_STRUCT_PACKPUSH
  50.     #pragma pack(push, 2)
  51. #elif PRAGMA_STRUCT_PACK
  52.     #pragma pack(2)
  53. #endif
  54.  
  55. enum {
  56.     kFirstPageMin                = 1,                            /* min value for first page */
  57.     kLastPageMax                = 32767                            /* max value for last page */
  58. };
  59.  
  60. enum {
  61.     iPFMaxPgs                    = 128,
  62.     iPrPgFract                    = 120,                            /*Page scale factor. ptPgSize (below) is in units of 1/iPrPgFract*/
  63.     iPrPgFst                    = 1,                            /*Page range constants*/
  64.     iPrPgMax                    = 9999,
  65.     iPrRelease                    = 3,                            /*Current version number of the code.*/
  66.     iPrSavPFil                    = -1,
  67.     iPrAbort                    = 0x0080,
  68.     iPrDevCtl                    = 7,                            /*The PrDevCtl Proc's ctl number*/
  69.     lPrReset                    = 0x00010000,                    /*The PrDevCtl Proc's CParam for reset*/
  70.     lPrLineFeed                    = 0x00030000,
  71.     lPrLFStd                    = 0x0003FFFF,                    /*The PrDevCtl Proc's CParam for std paper advance*/
  72.     lPrLFSixth                    = 0x0003FFFF,
  73.     lPrPageEnd                    = 0x00020000,                    /*The PrDevCtl Proc's CParam for end page*/
  74.     lPrDocOpen                    = 0x00010000,
  75.     lPrPageOpen                    = 0x00040000,
  76.     lPrPageClose                = 0x00020000,
  77.     lPrDocClose                    = 0x00050000,
  78.     iFMgrCtl                    = 8,                            /*The FMgr's Tail-hook Proc's ctl number*/
  79.     iMscCtl                        = 9,                            /*The FMgr's Tail-hook Proc's ctl number*/
  80.     iPvtCtl                        = 10                            /*The FMgr's Tail-hook Proc's ctl number*/
  81. };
  82.  
  83. #define sPrDrvr ".Print"
  84. /*    Error Codes moved to Errors.(hap) */
  85. enum {
  86.     pPrGlobals                    = 0x00000944,                    /*The PrVars lo mem area:*/
  87.     bDraftLoop                    = 0,
  88.     bSpoolLoop                    = 1,
  89.     bUser1Loop                    = 2,
  90.     bUser2Loop                    = 3,
  91.     fNewRunBit                    = 2,
  92.     fHiResOK                    = 3,
  93.     fWeOpenedRF                    = 4,                            /*Driver constants */
  94.     iPrBitsCtl                    = 4,
  95.     lScreenBits                    = 0,
  96.     lPaintBits                    = 1,
  97.     lHiScreenBits                = 0x00000002,                    /*The Bitmap Print Proc's Screen Bitmap param*/
  98.     lHiPaintBits                = 0x00000003,                    /*The Bitmap Print Proc's Paint [sq pix] param*/
  99.     iPrIOCtl                    = 5,
  100.     iPrEvtCtl                    = 6,                            /*The PrEvent Proc's ctl number*/
  101.     lPrEvtAll                    = 0x0002FFFD,                    /*The PrEvent Proc's CParam for the entire screen*/
  102.     lPrEvtTop                    = 0x0001FFFD,                    /*The PrEvent Proc's CParam for the top folder*/
  103.     iPrDrvrRef                    = -3
  104. };
  105.  
  106. enum {
  107.     getRslDataOp                = 4,
  108.     setRslOp                    = 5,
  109.     draftBitsOp                    = 6,
  110.     noDraftBitsOp                = 7,
  111.     getRotnOp                    = 8,
  112.     NoSuchRsl                    = 1,
  113.     OpNotImpl                    = 2,                            /*the driver doesn't support this opcode*/
  114.     RgType1                        = 1
  115. };
  116.  
  117. enum {
  118.     feedCut                        = 0,
  119.     feedFanfold                    = 1,
  120.     feedMechCut                    = 2,
  121.     feedOther                    = 3
  122. };
  123.  
  124. typedef SInt8                             TFeed;
  125. enum {
  126.     scanTB                        = 0,
  127.     scanBT                        = 1,
  128.     scanLR                        = 2,
  129.     scanRL                        = 3
  130. };
  131.  
  132. typedef SInt8                             TScan;
  133. /* A Rect Ptr */
  134. typedef Rect *                            TPRect;
  135. typedef CALLBACK_API( void , PrIdleProcPtr )(void );
  136. typedef CALLBACK_API( void , PItemProcPtr )(DialogPtr theDialog, short item);
  137. typedef STACK_UPP_TYPE(PrIdleProcPtr)                             PrIdleUPP;
  138. typedef STACK_UPP_TYPE(PItemProcPtr)                             PItemUPP;
  139. #if OPAQUE_UPP_TYPES
  140.     EXTERN_API(PrIdleUPP)
  141.     NewPrIdleUPP                   (PrIdleProcPtr            userRoutine);
  142.  
  143.     EXTERN_API(PItemUPP)
  144.     NewPItemUPP                       (PItemProcPtr            userRoutine);
  145.  
  146.     EXTERN_API(void)
  147.     DisposePrIdleUPP               (PrIdleUPP                userUPP);
  148.  
  149.     EXTERN_API(void)
  150.     DisposePItemUPP                   (PItemUPP                userUPP);
  151.  
  152.     EXTERN_API(void)
  153.     InvokePrIdleUPP                   (PrIdleUPP                userUPP);
  154.  
  155.     EXTERN_API(void)
  156.     InvokePItemUPP                   (DialogPtr                theDialog,
  157.                                     short                    item,
  158.                                     PItemUPP                userUPP);
  159.  
  160. #else
  161.     enum { uppPrIdleProcInfo = 0x00000000 };                         /* pascal no_return_value Func() */
  162.     enum { uppPItemProcInfo = 0x000002C0 };                         /* pascal no_return_value Func(4_bytes, 2_bytes) */
  163.     #define NewPrIdleUPP(userRoutine)                                 (PrIdleUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppPrIdleProcInfo, GetCurrentArchitecture())
  164.     #define NewPItemUPP(userRoutine)                                 (PItemUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppPItemProcInfo, GetCurrentArchitecture())
  165.     #define DisposePrIdleUPP(userUPP)                                 DisposeRoutineDescriptor(userUPP)
  166.     #define DisposePItemUPP(userUPP)                                 DisposeRoutineDescriptor(userUPP)
  167.     #define InvokePrIdleUPP(userUPP)                                 CALL_ZERO_PARAMETER_UPP((userUPP), uppPrIdleProcInfo)
  168.     #define InvokePItemUPP(theDialog, item, userUPP)                 CALL_TWO_PARAMETER_UPP((userUPP), uppPItemProcInfo, (theDialog), (item))
  169. #endif
  170. /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  171. #define NewPrIdleProc(userRoutine)                                 NewPrIdleUPP(userRoutine)
  172. #define NewPItemProc(userRoutine)                                 NewPItemUPP(userRoutine)
  173. #define CallPrIdleProc(userRoutine)                                InvokePrIdleUPP(userRoutine)
  174. #define CallPItemProc(userRoutine, theDialog, item)                InvokePItemUPP(theDialog, item, userRoutine)
  175. #if !OPAQUE_TOOLBOX_STRUCTS
  176.  
  177. struct TPrPort {
  178.     GrafPort                         gPort;                        /*The Printer's graf port.*/
  179.     QDProcs                         gProcs;                        /*..and its procs*/
  180.     long                             lGParam1;                    /*16 bytes for private parameter storage.*/
  181.     long                             lGParam2;
  182.     long                             lGParam3;
  183.     long                             lGParam4;
  184.     Boolean                         fOurPtr;                    /*Whether the PrPort allocation was done by us.*/
  185.     Boolean                         fOurBits;                    /*Whether the BitMap allocation was done by us.*/
  186. };
  187. typedef struct TPrPort                    TPrPort;
  188.  
  189. typedef TPrPort *                        TPPrPort;
  190. #else
  191. typedef struct OpaqueTPPrPort*             TPPrPort;
  192. #endif  /* !OPAQUE_TOOLBOX_STRUCTS */
  193.  
  194. typedef TPPrPort                         TPPrPortRef;
  195. /* Printing Graf Port. All printer imaging, whether spooling, banding, etc, happens "thru" a GrafPort.
  196.   This is the "PrPeek" record. */
  197.  
  198. struct TPrInfo {
  199.     short                             iDev;                        /*Font mgr/QuickDraw device code*/
  200.     short                             iVRes;                        /*Resolution of device, in device coordinates*/
  201.     short                             iHRes;                        /*..note: V before H => compatable with Point.*/
  202.     Rect                             rPage;                        /*The page (printable) rectangle in device coordinates.*/
  203. };
  204. typedef struct TPrInfo                    TPrInfo;
  205.  
  206. typedef TPrInfo *                        TPPrInfo;
  207. /* Print Info Record: The parameters needed for page composition. */
  208.  
  209. struct TPrStl {
  210.     short                             wDev;
  211.     short                             iPageV;
  212.     short                             iPageH;
  213.     SInt8                             bPort;
  214.     TFeed                             feed;
  215. };
  216. typedef struct TPrStl                    TPrStl;
  217.  
  218. typedef TPrStl *                        TPPrStl;
  219.  
  220. struct TPrXInfo {
  221.     short                             iRowBytes;
  222.     short                             iBandV;
  223.     short                             iBandH;
  224.     short                             iDevBytes;
  225.     short                             iBands;
  226.     SInt8                             bPatScale;
  227.     SInt8                             bUlThick;
  228.     SInt8                             bUlOffset;
  229.     SInt8                             bUlShadow;
  230.     TScan                             scan;
  231.     SInt8                             bXInfoX;
  232. };
  233. typedef struct TPrXInfo                    TPrXInfo;
  234.  
  235. typedef TPrXInfo *                        TPPrXInfo;
  236.  
  237. struct TPrJob {
  238.     short                             iFstPage;                    /*Page Range.*/
  239.     short                             iLstPage;
  240.     short                             iCopies;                    /*No. copies.*/
  241.     SInt8                             bJDocLoop;                    /*The Doc style: Draft, Spool, .., and ..*/
  242.     Boolean                         fFromUsr;                    /*Printing from an User's App (not PrApp) flag*/
  243.     PrIdleUPP                         pIdleProc;                    /*The Proc called while waiting on IO etc.*/
  244.     StringPtr                         pFileName;                    /*Spool File Name: NIL for default.*/
  245.     short                             iFileVol;                    /*Spool File vol, set to 0 initially*/
  246.     SInt8                             bFileVers;                    /*Spool File version, set to 0 initially*/
  247.     SInt8                             bJobX;                        /*An eXtra byte.*/
  248. };
  249. typedef struct TPrJob                    TPrJob;
  250.  
  251. typedef TPrJob *                        TPPrJob;
  252. /* Print Job: Print "form" for a single print request. */
  253.  
  254. struct TPrint {
  255.     short                             iPrVersion;                    /*(2) Printing software version*/
  256.     TPrInfo                         prInfo;                        /*(14) the PrInfo data associated with the current style.*/
  257.     Rect                             rPaper;                        /*(8) The paper rectangle [offset from rPage]*/
  258.     TPrStl                             prStl;                        /*(8)  This print request's style.*/
  259.     TPrInfo                         prInfoPT;                    /*(14)  Print Time Imaging metrics*/
  260.     TPrXInfo                         prXInfo;                    /*(16)  Print-time (expanded) Print info record.*/
  261.     TPrJob                             prJob;                        /*(20) The Print Job request (82)  Total of the above; 120-82 = 38 bytes needed to fill 120*/
  262.     short                             printX[19];                    /*Spare to fill to 120 bytes!*/
  263. };
  264. typedef struct TPrint                    TPrint;
  265.  
  266. typedef TPrint *                        TPPrint;
  267. typedef TPPrint *                        THPrint;
  268.  
  269. struct TPrStatus {
  270.     short                             iTotPages;                    /*Total pages in Print File.*/
  271.     short                             iCurPage;                    /*Current page number*/
  272.     short                             iTotCopies;                    /*Total copies requested*/
  273.     short                             iCurCopy;                    /*Current copy number*/
  274.     short                             iTotBands;                    /*Total bands per page.*/
  275.     short                             iCurBand;                    /*Current band number*/
  276.     Boolean                         fPgDirty;                    /*True if current page has been written to.*/
  277.     Boolean                         fImaging;                    /*Set while in band's DrawPic call.*/
  278.     THPrint                         hPrint;                        /*Handle to the active Printer record*/
  279.     TPPrPort                         pPrPort;                    /*Ptr to the active PrPort*/
  280.     PicHandle                         hPic;                        /*Handle to the active Picture*/
  281. };
  282. typedef struct TPrStatus                TPrStatus;
  283.  
  284. typedef TPrStatus *                        TPPrStatus;
  285. typedef TPPrStatus                         TPPrStatusRef;
  286.  
  287. /* Print Status: Print information during printing. */
  288.  
  289. struct TPfPgDir {
  290.     short                             iPages;
  291.     long                             iPgPos[129];                /*ARRAY [0..iPfMaxPgs] OF LONGINT*/
  292. };
  293. typedef struct TPfPgDir                    TPfPgDir;
  294.  
  295. typedef TPfPgDir *                        TPPfPgDir;
  296. typedef TPPfPgDir *                        THPfPgDir;
  297. /* PicFile = a TPfHeader followed by n QuickDraw Pics (whose PicSize is invalid!) */
  298. /* This is the Printing Dialog Record. Only used by folks appending their own
  299.    DITLs to the print dialogs.    Print Dialog: The Dialog Stream object. */
  300. #if !OPAQUE_TOOLBOX_STRUCTS
  301.  
  302. struct TPrDlg {
  303.     DialogRecord                     Dlg;                        /*The Dialog window*/
  304.     ModalFilterUPP                     pFltrProc;                    /*The Filter Proc.*/
  305.     PItemUPP                         pItemProc;                    /*The Item evaluating proc.*/
  306.     THPrint                         hPrintUsr;                    /*The user's print record.*/
  307.     Boolean                         fDoIt;
  308.     Boolean                         fDone;
  309.     long                             lUser1;                        /*Four longs for apps to hang global data.*/
  310.     long                             lUser2;                        /*Plus more stuff needed by the particular*/
  311.     long                             lUser3;                        /*printing dialog.*/
  312.     long                             lUser4;
  313. };
  314. typedef struct TPrDlg                    TPrDlg;
  315.  
  316. typedef TPrDlg *                        TPPrDlg;
  317. #else
  318. typedef struct OpaqueTPPrDlg*             TPPrDlg;
  319. #endif  /* !OPAQUE_TOOLBOX_STRUCTS */
  320.  
  321. typedef TPPrDlg                         TPPrDlgRef;
  322. typedef CALLBACK_API( TPPrDlgRef , PDlgInitProcPtr )(THPrint hPrint);
  323. typedef STACK_UPP_TYPE(PDlgInitProcPtr)                         PDlgInitUPP;
  324. #if OPAQUE_UPP_TYPES
  325.     EXTERN_API(PDlgInitUPP)
  326.     NewPDlgInitUPP                   (PDlgInitProcPtr            userRoutine);
  327.  
  328.     EXTERN_API(void)
  329.     DisposePDlgInitUPP               (PDlgInitUPP                userUPP);
  330.  
  331.     EXTERN_API(TPPrDlgRef)
  332.     InvokePDlgInitUPP               (THPrint                    hPrint,
  333.                                     PDlgInitUPP                userUPP);
  334.  
  335. #else
  336.     enum { uppPDlgInitProcInfo = 0x000000F0 };                         /* pascal 4_bytes Func(4_bytes) */
  337.     #define NewPDlgInitUPP(userRoutine)                             (PDlgInitUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppPDlgInitProcInfo, GetCurrentArchitecture())
  338.     #define DisposePDlgInitUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  339.     #define InvokePDlgInitUPP(hPrint, userUPP)                         (TPPrDlgRef)CALL_ONE_PARAMETER_UPP((userUPP), uppPDlgInitProcInfo, (hPrint))
  340. #endif
  341. /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  342. #define NewPDlgInitProc(userRoutine)                             NewPDlgInitUPP(userRoutine)
  343. #define CallPDlgInitProc(userRoutine, hPrint)                    InvokePDlgInitUPP(hPrint, userRoutine)
  344.  
  345. struct TGnlData {
  346.     short                             iOpCode;
  347.     short                             iError;
  348.     long                             lReserved;                    /*more fields here depending on call*/
  349. };
  350. typedef struct TGnlData                    TGnlData;
  351.  
  352. struct TRslRg {
  353.     short                             iMin;
  354.     short                             iMax;
  355. };
  356. typedef struct TRslRg                    TRslRg;
  357.  
  358. struct TRslRec {
  359.     short                             iXRsl;
  360.     short                             iYRsl;
  361. };
  362. typedef struct TRslRec                    TRslRec;
  363.  
  364. struct TGetRslBlk {
  365.     short                             iOpCode;
  366.     short                             iError;
  367.     long                             lReserved;
  368.     short                             iRgType;
  369.     TRslRg                             xRslRg;
  370.     TRslRg                             yRslRg;
  371.     short                             iRslRecCnt;
  372.     TRslRec                         rgRslRec[27];
  373. };
  374. typedef struct TGetRslBlk                TGetRslBlk;
  375.  
  376. struct TSetRslBlk {
  377.     short                             iOpCode;
  378.     short                             iError;
  379.     long                             lReserved;
  380.     THPrint                         hPrint;
  381.     short                             iXRsl;
  382.     short                             iYRsl;
  383. };
  384. typedef struct TSetRslBlk                TSetRslBlk;
  385.  
  386. struct TDftBitsBlk {
  387.     short                             iOpCode;
  388.     short                             iError;
  389.     long                             lReserved;
  390.     THPrint                         hPrint;
  391. };
  392. typedef struct TDftBitsBlk                TDftBitsBlk;
  393.  
  394. struct TGetRotnBlk {
  395.     short                             iOpCode;
  396.     short                             iError;
  397.     long                             lReserved;
  398.     THPrint                         hPrint;
  399.     Boolean                         fLandscape;
  400.     SInt8                             bXtra;
  401. };
  402. typedef struct TGetRotnBlk                TGetRotnBlk;
  403. EXTERN_API( void )
  404. PrPurge                            (void)                                                        FOURWORDINLINE(0x2F3C, 0xA800, 0x0000, 0xA8FD);
  405.  
  406. EXTERN_API( void )
  407. PrNoPurge                        (void)                                                        FOURWORDINLINE(0x2F3C, 0xB000, 0x0000, 0xA8FD);
  408.  
  409. EXTERN_API( void )
  410. PrOpen                            (void)                                                        FOURWORDINLINE(0x2F3C, 0xC800, 0x0000, 0xA8FD);
  411.  
  412. EXTERN_API( void )
  413. PrClose                            (void)                                                        FOURWORDINLINE(0x2F3C, 0xD000, 0x0000, 0xA8FD);
  414.  
  415. EXTERN_API( void )
  416. PrintDefault                    (THPrint                 hPrint)                                FOURWORDINLINE(0x2F3C, 0x2004, 0x0480, 0xA8FD);
  417.  
  418. EXTERN_API( Boolean )
  419. PrValidate                        (THPrint                 hPrint)                                FOURWORDINLINE(0x2F3C, 0x5204, 0x0498, 0xA8FD);
  420.  
  421. EXTERN_API( Boolean )
  422. PrStlDialog                        (THPrint                 hPrint)                                FOURWORDINLINE(0x2F3C, 0x2A04, 0x0484, 0xA8FD);
  423.  
  424. EXTERN_API( Boolean )
  425. PrJobDialog                        (THPrint                 hPrint)                                FOURWORDINLINE(0x2F3C, 0x3204, 0x0488, 0xA8FD);
  426.  
  427. EXTERN_API( TPPrDlgRef )
  428. PrStlInit                        (THPrint                 hPrint)                                FOURWORDINLINE(0x2F3C, 0x3C04, 0x040C, 0xA8FD);
  429.  
  430. EXTERN_API( TPPrDlgRef )
  431. PrJobInit                        (THPrint                 hPrint)                                FOURWORDINLINE(0x2F3C, 0x4404, 0x0410, 0xA8FD);
  432.  
  433. EXTERN_API( void )
  434. PrJobMerge                        (THPrint                 hPrintSrc,
  435.                                  THPrint                 hPrintDst)                            FOURWORDINLINE(0x2F3C, 0x5804, 0x089C, 0xA8FD);
  436.  
  437. EXTERN_API( Boolean )
  438. PrDlgMain                        (THPrint                 hPrint,
  439.                                  PDlgInitUPP             pDlgInit)                            FOURWORDINLINE(0x2F3C, 0x4A04, 0x0894, 0xA8FD);
  440.  
  441. EXTERN_API( TPPrPort )
  442. PrOpenDoc                        (THPrint                 hPrint,
  443.                                  TPPrPort                 pPrPort, /* can be NULL */
  444.                                  Ptr                     pIOBuf)                                FOURWORDINLINE(0x2F3C, 0x0400, 0x0C00, 0xA8FD);
  445.  
  446. EXTERN_API( void )
  447. PrCloseDoc                        (TPPrPort                 pPrPort)                            FOURWORDINLINE(0x2F3C, 0x0800, 0x0484, 0xA8FD);
  448.  
  449. EXTERN_API( void )
  450. PrOpenPage                        (TPPrPort                 pPrPort,
  451.                                  TPRect                 pPageFrame)                            FOURWORDINLINE(0x2F3C, 0x1000, 0x0808, 0xA8FD);
  452.  
  453. EXTERN_API( void )
  454. PrClosePage                        (TPPrPort                 pPrPort)                            FOURWORDINLINE(0x2F3C, 0x1800, 0x040C, 0xA8FD);
  455.  
  456. EXTERN_API( void )
  457. PrPicFile                        (THPrint                 hPrint,
  458.                                  TPPrPort                 pPrPort,
  459.                                  Ptr                     pIOBuf,
  460.                                  Ptr                     pDevBuf,
  461.                                  TPPrStatus             prStatus)                            FOURWORDINLINE(0x2F3C, 0x6005, 0x1480, 0xA8FD);
  462.  
  463. EXTERN_API( short )
  464. PrError                            (void)                                                        FOURWORDINLINE(0x2F3C, 0xBA00, 0x0000, 0xA8FD);
  465.  
  466. EXTERN_API( void )
  467. PrSetError                        (short                     iErr)                                FOURWORDINLINE(0x2F3C, 0xC000, 0x0200, 0xA8FD);
  468.  
  469. EXTERN_API( void )
  470. PrGeneral                        (Ptr                     pData)                                FOURWORDINLINE(0x2F3C, 0x7007, 0x0480, 0xA8FD);
  471.  
  472. EXTERN_API( void )
  473. PrDrvrOpen                        (void)                                                        FOURWORDINLINE(0x2F3C, 0x8000, 0x0000, 0xA8FD);
  474.  
  475. EXTERN_API( void )
  476. PrDrvrClose                        (void)                                                        FOURWORDINLINE(0x2F3C, 0x8800, 0x0000, 0xA8FD);
  477.  
  478. EXTERN_API( void )
  479. PrCtlCall                        (short                     iWhichCtl,
  480.                                  long                     lParam1,
  481.                                  long                     lParam2,
  482.                                  long                     lParam3)                            FOURWORDINLINE(0x2F3C, 0xA000, 0x0E00, 0xA8FD);
  483.  
  484. EXTERN_API( Handle )
  485. PrDrvrDCE                        (void)                                                        FOURWORDINLINE(0x2F3C, 0x9400, 0x0000, 0xA8FD);
  486.  
  487. EXTERN_API( short )
  488. PrDrvrVers                        (void)                                                        FOURWORDINLINE(0x2F3C, 0x9A00, 0x0000, 0xA8FD);
  489.  
  490. EXTERN_API( short )
  491. PrLoadDriver                    (void)                                                        FOURWORDINLINE(0x2F3C, 0xD800, 0x0000, 0xA8FD);
  492.  
  493.  
  494.  
  495. #if PRAGMA_STRUCT_ALIGN
  496.     #pragma options align=reset
  497. #elif PRAGMA_STRUCT_PACKPUSH
  498.     #pragma pack(pop)
  499. #elif PRAGMA_STRUCT_PACK
  500.     #pragma pack()
  501. #endif
  502.  
  503. #ifdef PRAGMA_IMPORT_OFF
  504. #pragma import off
  505. #elif PRAGMA_IMPORT
  506. #pragma import reset
  507. #endif
  508.  
  509. #ifdef __cplusplus
  510. }
  511. #endif
  512.  
  513. #endif /* __PRINTING__ */
  514.  
  515.